package com.example.piece.repository

import com.example.base.repository.BaseRepository
import com.example.piece.entity.*
import com.example.piece.net.NetManager

class UerRepository:BaseRepository() {

    /**
     *             1
     * 用户关注
     *
     * @param status      status 1 关注 0 取消关注
     * @param userId 用户id
     *
     * @see Unit
     */
    suspend fun userAttention(status: String, userId: String) = request {
        NetManager.apiService.userAttention(status, userId)
    }
    /**
     *               2
     * 获取指定用户关注列表
     * 需要登录
     *
     * @param page     分页
     * @param targetUserId 用户id
     * @see List<UserAttentionListEntity>
     * @see UserAttentionListEntity
     */
    suspend fun userAttentionList(page: String, targetUserId: String) = request {
        NetManager.apiService.userAttentionList(page, targetUserId)
    }
    /**
     *              3
     * 绑定邀请码
     * 需要登录
     *
     * @param code     邀请码
     *
     * @see Unit
     */
    suspend fun userBindInvite(code: String) = request {
        NetManager.apiService.userBindInvite(code )
    }
    /**
     *                 4
     * 检查视频下载权限
     * 视频下载之前调用接口检查权限
     * @see UserCheckPermissionDownloadEntity
     */
    suspend fun userCheckPermissionDownload() = request {
        NetManager.apiService.userCheckPermissionDownload( )
    }
    /**
     * 5
     * 注销账户
     * 需要登录
     *
     * @param psw     登录密码
     *
     * @see Unit
     */
    suspend fun userCloseAccount(psw: String) = request {
        NetManager.apiService.userCloseAccount(psw )
    }
    /**
     * 6
     * 获取当前登录用户收藏列表
     * 需要登录
     *
     * @param page     分页
     * @see List<AttentionEntity>
     * @see AttentionEntity
     */
    suspend fun userCollectList(page: String) = request {
        NetManager.apiService.userCollectList(page )
    }
    /**
     * 7
     * 获取指定用户的评论列表
     * 需要登录
     *
     * @param page     分页
     * @see List<UserCommentListEntity>
     * @see UserCommentListEntity

     */
    suspend fun userCommentList(page: String) = request {
        NetManager.apiService.userCommentList(page )
    }
    /**
     * 8
     * 获取指定用户粉丝列表
     * 需要登录
     *
     * @param page     分页
     * @param targetUserId  用户id
     * @see List<UserAttentionListEntity>
     * @see  UserAttentionListEntity
     */
    suspend fun userFansList(page: String,targetUserId: String) = request {
        NetManager.apiService.userFansList(page,targetUserId )
    }

    /**
     * 9
     * 获取用户信息
     * 需要登录
     *@see UserInfoEntity
     */
    suspend fun userInfo() = request {
        NetManager.apiService.userInfo( )
    }
    /**
     * 10
     * 获取指定用户的信息
     * 需要登录
     *
     * @param targetUserId     目标用户id
     * @see UserInfoTargetEntity

     */
    suspend fun userInfoTarget(targetUserId: String) = request {
        NetManager.apiService.userInfoTarget(targetUserId )
    }
    /**
     * 11
     * 更新用户信息
     * 需要登录
     *
     * @param content     更新的内容
     * @param type  更新的类目 0 修改头像 先上传到七牛云 1 修改昵称 2 修改签名 3 修改性别 4 修改生日
     * @see Unit
     */
    suspend fun userInfoUpdate(content: String,type: String) = request {
        NetManager.apiService.userInfoUpdate(content,type )
    }
    /**
     * 12
     * 获取当前用户帖子列表
     * 需要登录
     *
     * @param page     分页
     *
     * @see List<AttentionEntity>
     * @see AttentionEntity
     */
    suspend fun userJokesList(page: String) = request {
        NetManager.apiService.userJokesList(page )
    }
    /**
     * 13
     * 获取当前用户积分详情
     * 需要登录
     *@see UserLedouInfoEntity
     */
    suspend fun userLedouInfo() = request {
        NetManager.apiService.userLedouInfo( )
    }
    /**
     * 14
     * 获取当前用户积分详情列表
     * 需要登录
     *
     * @param page     分页
     * @see List<UserLedouListEntity>
     * @see UserLedouListEntity
     */
    suspend fun userLedouList(page: String) = request {
        NetManager.apiService.userLedouList(page )
    }

    /**
     * 15
     * 当前用户抽奖
     * 需要登录
     *@see Unit
     */
    suspend fun userLedouLottery() = request {
        NetManager.apiService.userLedouLottery( )
    }
    /**
     * 16
     * 当前用户抽奖列表
     * 需要登录
     *
     * @param page     分页
     * @see List<UserLedouListEntity>
     * @see UserLedouListEntity
     */
    suspend fun userLedouLotteryList(page: String) = request {
        NetManager.apiService.userLedouLotteryList(page )
    }

    /**
     * 17
     * 获取当前登录用户点赞列表
     * 需要登录
     *
     * @param page     分页
     *
     * @see List<AttentionEntity>
     * @see AttentionEntity
     */
    suspend fun userLikeList(page: String) = request {
        NetManager.apiService.userLikeList(page )
    }
    /**
     * 18
     * 验证码登录
     *
     * @param code     验证码
     * @param phone     手机号
     * @see UserLoginCodeEntity
     */
    suspend fun userLoginCode(code: String,phone: String) = request {
        NetManager.apiService.userLoginCode(code, phone)
    }

    /**
     * 19
     * 获取登录验证码
     *不会真实发送验证码，如需发送真实环境下的验证码，请联系管理员开通
     * @param phone     手机号
     * @see Unit
     */
    suspend fun userLoginGetCode(phone: String) = request {
        NetManager.apiService.userLoginGetCode( phone)
    }

    /**
     * 20
     * 账号密码登录
     *
     * @param psw     密码 无需加密，后台加密
     * @param phone     手机号
     * @see UserLoginCodeEntity
     */
    suspend fun userLoginPsw(psw: String,phone: String) = request {
        NetManager.apiService.userLoginPsw( psw,phone)
    }

    /**
     * 21
     * 获取指定用户的消息列表
     *
     * @param page     分页
     * @param type     type=0 赞 type=1 评论 type=2 关注
     * @see List<UserCommentListEntity>
     * @see UserCommentListEntity
     */
    suspend fun userMessageList(page: String,type: String) = request {
        NetManager.apiService.userMessageList( page,type)
    }
    /**
     * 22
     * 获取系统消息列表
     *
     * @param page     分页
     * @see List<UserMessageSystemEntity>
     * @see UserMessageSystemEntity
     */
    suspend fun userMessageSystem(page: String) = request {
        NetManager.apiService.userMessageSystem( page)
    }

    /**
     * 23
     * 获取当前用户的未读消息数
     * 需要登录
     *@see UserMessageUnreadEntity
     */
    suspend fun userMessageUnread() = request {
        NetManager.apiService.userMessageUnread( )
    }
    /**
     * 24
     * 修改密码
     *需要登录，修改成功之后请让用户重新走登录流程
     * @param old_psw     旧密码
     * @param password     新密码
     * @param new_psw     new_psw
     * @see Unit
     */
    suspend fun userPswChange(old_psw: String, password: String, new_psw: String) = request {
        NetManager.apiService.userPswChange( old_psw,password,new_psw)
    }

    /**
     * 25
     * 重置密码
     *密码明文传输，后台加密
     * @param code     验证码
     * @param password     新密码
     * @param phone     手机号
     * @see Unit
     */
    suspend fun userPswReset(code: String, password: String, phone: String) = request {
        NetManager.apiService.userPswReset( code,password,phone)
    }
    /**
     * 26
     * 重置密码获取验证码
     *不会真实发送验证码，如需发送真实环境下的验证码，请联系管理员开通
     * @param phone     手机号
     * @see Unit
     */
    suspend fun userPswResetGetCode( phone: String) = request {
        NetManager.apiService.userPswResetGetCode(phone)
    }
    /**
     * 27
     * 搜索用户
     * @param keyword     关键字
     * @param page     分页
     * @see List<AttentionUserEntity>
     * @see  AttentionUserEntity
     */
    suspend fun userSearch( keyword: String,page: String) = request {
        NetManager.apiService.userSearch(keyword,page)
    }

    /**
     * 28
     * 当前用户签到
     * 需要登录
     *@see UserSigninEntity
     */
    suspend fun userSignin( ) = request {
        NetManager.apiService.userSignin()
    }

}